package com.cskaoyan.javase.oop2._0encapsulate._0introduction;

/**
 * 使用private私有化成员变量，并提供方法给外界访问时，需要注意：
 *
 *      1.成员变量的访问权限应该尽量收紧，尽量私有化，
 *          当然有必要时也可以给外界权限直接访问。
 *       补充:
 *          实际开发中,绝大多数情况下,都会将成员变量直接私有化,因为成员变量没必要直接给外界访问,这是一个设计的原则
 *          如果外界确有访问需求,再提供getter/setter方法
 *
 *       2.Getter/Setter方法的写法显然十分固定，可以直接使用快捷键Alt + Insert快速生成。
 *
 *      2.对于boolean类型的成员变量来说，
 *          Getter方法的名字比较特殊，采用isXxx（Xxx是变量名）的形式。
 *          这时如果该boolean类型的成员变量本身就叫isXxx时，就会出现问题
 *          导致程序误以为成员变量名为male的情况发生（实际为isMale）。
 *          所以在很多Java开发规范中，都明确建议boolean类型的成员变量名不要命名为isXxx。
 *
 *      3.静态成员变量，如果也需要Getter/Setter方法，需要注意其Getter/Setter方法也要是静态的。
 *      （当然，静态变量写Getter/Setter方法是很少见的）
 *
 * @since 17:48
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo2 {
}

class Teacher {
    private String gender;
    private boolean isMale;

    public boolean isMale() {
        return isMale;
    }

    public void setMale(boolean male) {
        isMale = male;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }
}